/**
 * @param {Array} position = [114,30]
 * @param {Array} attr = [
 * {name:"name",type:"string",value:"中国"},
 * {name:"id",type:"number",value:1001}
 * ]
 * @param {Object} service ={name:"igserver服务的名称",layerId:"添加要素所在的图层"}
 * @param {Object} docLayer 地图文档的图层
 * */
const POINST_STYLE = {
  Angle: 0,
  Color: 6, //子图颜色
  Space: 0,
  SymHeight: 5, //高度
  SymWidth: 5, //宽度
  SymID: 21, //子图号
};
function updatapoint(
  fid,
  position,
  attr,
  service
  // docLayer
) {
  /* 1、创建mapgis要素 */
  /* 1-1、构建几何信息 geometry */
  var gpoint = new Zondy.Object.GPoint(position[0], position[1]);
  //设置当前点要素的几何信息
  var fGeom = new Zondy.Object.FeatureGeometry({ PntGeom: [gpoint] });
  /* 1-2、构建样式 */
  //描述点要素的符号参数信息
  var pointInfo = new Zondy.Object.CPointInfo(POINST_STYLE);
  //设置当前点要素的图形参数信息
  var webGraphicInfo = new Zondy.Object.WebGraphicsInfo({
    /* 1--Point  2--LineString  3--Area */
    InfoType: 1,
    PntInfo: pointInfo,
  });
  /* 1-3、属性 */
  //设置添加点要素的属性信息
  var attValue = attr.map((item) => item.value);
  //创建一个要素
  var feature = new Zondy.Object.Feature({
    fGeom: fGeom,
    GraphicInfo: webGraphicInfo,
    AttValue: attValue,
  });
  //设置要素为点要素  1 Point 2LineString 3Polygon
  feature.setFType(1);
  feature.setFID(fid); //++  设置更新点要素的fid值
  /* 2、将要素添加要素集 */
  var featureSet = new Zondy.Object.FeatureSet();
  //设置属性结构  测试看是否为必选
  var cAttStruct = new Zondy.Object.CAttStruct({
    FldName: attr.map((item) => item.name),
    FldNumber: attr.length,
    FldType: attr.map((item) => item.type),
  });
  featureSet.AttStruct = cAttStruct;
  //添加要素到要素数据集
  featureSet.addFeature(feature);

  /* 3、调用服务添加要素【http】 */
  /* 第一个参数  ig servre服务的名称 */
  /* 第二个参数 是添加要素所在的图层 Point-0 */
  var editService = new Zondy.Service.EditDocFeature(
    service.name,
    service.layerId,
    {
      ip: "172.16.2.22",
      port: 6163,
    }
  );
  //执行添加点要素功能
  editService.update(featureSet, onPntSuccess);
}
function onPntSuccess(data) {
  if (data.succeed) {
    alert("修改成功！");
    // docLayer.refresh();
  } else {
    alert("修改失败！");
  }
}
export { updatapoint };
